package com.jch.dm.chapter_1_iterator;

/**
 * @author: jch
 * 书架类 实现 集合接口
 **/
public class BookShelf implements Aggregate {
    /**
     * 书籍数组
     */
    private Book[] books;

    /**
     * 书籍数组 最后一项下标
     */
    private int last = 0;

    /**
     * 书架有参构造方法
     * @param maxsize 书架最大容量
     */
    public BookShelf(int maxsize) {
        this.books = new Book[maxsize];
    }

    /**
     * 获取书架上某个书籍
     * @param index 书籍位置
     * @return 书籍信息
     */
    public Book getBookAt(int index){
        return books[index];
    }

    /**
     * 向书架添加书籍
     * @param book 书籍信息
     */
    public void appendBook(Book book){
        this.books[last] = book;
        last++;
    }
    public int getLength(){
        return last;
    }
    /**
     * 生产迭代器
     *
     * @return 迭代器
     */
    public Iterator iterator() {
        return new BookShelfIterator(this);
    }
}
